#ifndef CAMERACONTROL_H
#define CAMERACONTROL_H

#include "cryptstring.h"
#include <QUrl>
#include <QString>
#include <QTime>
#include <QDateTime>
//和摄像头控制有关的命令
enum MoveCommand{
    // 方向控制
    CAMERA_UP,
    CAMERA_DOWN,
    CAMERA_LEFT,
    CAMERA_RIGHT,
    CAMERA_LEFT_UP,
    CAMERA_RIGHT_UP,
    CAMERA_LEFT_DOWN,
    CAMERA_RIGHT_DOWN,
    //变焦控制：
    CAMERA_ZOOM_OUT,
    CAMERA_ZOOM_IN,
    //聚焦控制：
    CAMERA_FOCUS_IN,
    CAMERA_FOCUS_OUT,
    // 停止：
    CAMERA_STOP
};
//和视频获取有关的命令

class CameraControl
{
public:
    CameraControl(const QString & url = "http://192.168.105.222/xsw");
    void setUrl(const QString &url);
    void setStep(int step);
    void setSpeed(int speed);
    void setChannelId(const uint32_t channelId);
    //TO do这个类直接

    ///
    /// \brief getMoveUrl根据传入的命令，生成指定的url
    /// \param command摄像头的移动命令
    /// \return 一个可以发送出去的URL
    /// \note 一定要发送s命令，不然不会停止
    QString getMoveUrl(enum MoveCommand command);
    ///
    /// \brief getHistoryVideo获取查询指定区间的录像的URL
    /// \param start_time起始时间,QDateTime，年月日时分秒
    /// \param end_time结束时间,QDateTime，年月日时分秒
    /// \return 历史影像获取的URL
    ///
    QString getHistoryVideo(const QDateTime& start_time, const QDateTime& end_time);

private:
    QString _url;
    int _speed = 67;
    int _step = 1;
    uint32_t _channelId = 1;

};

#endif // CAMERACONTROL_H
